home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1982-12-04 | 7.1 KB | 238 lines |
- 10 REM MONITOR
- 15 ZTITLE$="Program Title Here"
- 20 GOTO 30
- 25 END:REM Put Program Exit Here
- 30 ZHELPSW%=1:ZCSW%=0:ZW%=78
- 35 SCREEN 0,0,0:WIDTH 80:CLS:OPTION BASE 1
- 40 KEY OFF
- 45 ZB1$=STRING$(3,219):ZB2$=STRING$(79,219)
- 75 ZTOF$=CHR$(12):ZENT$="("+CHR$(17)+ZSHL$+ZSLR$+")":ZTFAC=425
- 80 DIM ZMENU$(15),ZMLEN%(15)
- 85 ZE$=" Not Available at this Point":ZDT$=DATE$:ZDT$=LEFT$(ZDT$,2)+"/"+MID$(ZDT$,4,2)+"/"+RIGHT$(ZDT$,2)
- 90 Z=6:GOSUB 100:GOTO 10000
- 95 REM Branch Table
- 100 LOCATE ,,0:ON Z GOSUB 115,675,740,750,785,805,830,850,860,880,905,915,925,935,945,975,985,1000,1015,1040,1050,1060,1070,1085,1095,1105,1120,1125,1135
- 105 RETURN
- 110 REM ZIN
- 115 ZD$="":ZN=0:GOSUB 1120:GOSUB 1125:ZR%=1:ZLEN%=VAL(ZFLD2$):ZTYPE%=VAL(MID$(Z$,ZPTR2%+1)):ZLEND%=LEN(ZFLD1$)
- 120 LOCATE 23,1:PRINT TAB(79);" ":LOCATE 23,1
- 125 PRINT ZFLD1$;" [";
- 130 IF ZPL$="" THEN 150
- 135 REM Pre-loaded input
- 140 PRINT ZPL$;STRING$(ZLEN%-LEN(ZPL$),".");"]":ZD$=ZPL$:ZCT%=LEN(ZPL$):LOCATE 23,ZLEND%+3+ZCT%,1:ZCPTR%=ZCT%+1:GOTO 170
- 145 REM No Preload
- 150 PRINT STRING$(ZLEN%,".");"]":LOCATE 23,ZLEND%+3,1
- 155 ZCT%=0:ZCPTR%=1
- 160 REM ZIN Inkey
- 165 LOCATE ,,1
- 170 ZCH$=INKEY$:IF ZCH$="" THEN 170
- 175 Z%=ASC(ZCH$):ZL%=LEN(ZCH$):IF Z%>126 THEN 170
- 180 REM Exten'd or Edit Char. Trap
- 185 IF ZL%>1 THEN 425
- 190 REM Control Char. Trap
- 195 IF Z%<32 THEN 285
- 200 REM Test Overstrike
- 205 IF ZINS%=1 THEN 265
- 210 IF ZCPTR%-1<ZCT% THEN 640
- 215 REM Test GT max
- 220 ZCT%=ZCT%+1:IF ZCT%>ZLEN% THEN ZCT%=ZCT%-1:GOTO 1140
- 225 ZCPTR%=ZCT%+1
- 230 IF ZCT%=1 THEN 240 ELSE 265
- 235 REM Special First Char.
- 240 IF (ZHELPSW%=1) AND (ZCH$="?") THEN ZR%=5:PRINT ZCH$;:GOTO 660
- 245 IF ZCH$="?" THEN PRINT ZCH$:Z=26:GOSUB 100:GOTO 115
- 250 IF ZCH$="+" THEN ZR%=2:PRINT ZCH$;:GOTO 660
- 255 GOTO 265
- 260 REM Normal Process
- 265 IF (Z%>96) AND (Z%<123) AND (ZCSW%=1) THEN ZCH$=CHR$(Z%-32)
- 270 IF ZINS%=1 THEN 550
- 275 PRINT ZCH$;:ZD$=ZD$+ZCH$:GOTO 170
- 280 REM Proc. Ctrl Char.
- 285 ZCTL%=Z%
- 290 REM ESC=abort
- 295 IF ZCTL%=27 THEN ZPL$="":GOTO 115
- 300 IF ZCTL%=3 THEN STOP:GOTO 115
- 305 IF ZCTL%=9 THEN 630
- 310 IF ZCTL%<>13 THEN 375
- 315 REM Proc. c/r
- 320 IF ZCT%=0 THEN ZR%=3:GOTO 660
- 325 IF ZTYPE%=1 THEN 665
- 330 IF ZD$="0" THEN 665
- 335 IF ZTYPE%=2 THEN 340 ELSE 350
- 340 ZT=VAL(ZD$):IF ZT=0 THEN 355
- 345 ZN=VAL(ZD$):IF ZN<> INT(ZN) THEN 355 ELSE 665
- 350 ZN=VAL(ZD$):IF ZN=0 THEN 360 ELSE 665
- 355 Z=21:GOTO 365
- 360 Z=22
- 365 ZSAVE$=Z$:GOSUB 100:Z$=ZSAVE$:GOTO 115
- 370 REM proc. B/U
- 375 IF ZCTL%=24 THEN ZR%=2:GOTO 660
- 380 REM Proc. BS
- 385 IF ZCTL%=8 THEN 395 ELSE 415
- 390 REM Short BS
- 395 IF ZCT%=0 THEN 1140
- 400 IF ZCPTR%-1<ZCT% THEN 575
- 405 ZCT%=ZCT%-1:ZCPTR%=ZCPTR%-1:LOCATE 23,ZLEND%+3+ZCT%:PRINT ".";:LOCATE 23,ZLEND%+3+ZCT%:ZD$=LEFT$(ZD$,LEN(ZD$)-1):GOTO 170
- 410 REM Pass Control Character
- 415 ZR%=4:ZN=ZCTL%:ZD$=" ":GOTO 665
- 420 REM Proc Ext'd Char.
- 425 ZXT%=ASC(MID$(ZCH$,2)):IF ZXT%=72 THEN ZR%=2:GOTO 660
- 430 REM ZIN Inner-field Editing
- 435 LOCATE ,,0:ZBR%=ZXT%-74:IF ZBR%<=0 THEN 445
- 440 ON ZBR% GOTO 470,445,485,445,500,445,445,530,575
- 445 GOSUB 1165:IF ZXT%=15 THEN 600
- 450 IF ZXT%=117 THEN 610
- 455 IF (ZXT%>58) AND (ZXT%<69) THEN 620
- 460 GOTO 170
- 465 REM Curs left
- 470 IF ZCPTR%=1 THEN 1140
- 475 GOSUB 1165:ZCPTR%=ZCPTR%-1:GOTO 1145
- 480 REM Curs right
- 485 IF ZCPTR%=ZCT%+1 THEN 1140
- 490 GOSUB 1165:ZCPTR%=ZCPTR%+1:GOTO 1145
- 495 REM END Key
- 500 Z%=23:Z=11:GOSUB 100:LOCATE 23,1:PRINT "Press END key again to End, space bar to continue [.]":LOCATE 23,52
- 505 ZCH9$=INKEY$:IF ZCH9$="" THEN 505
- 510 ZL%=LEN(ZCH9$):IF ZL%<2 THEN 115
- 515 ZXT%=ASC(MID$(ZCH9$,2)):IF ZXT%=79 THEN Z=15:GOSUB 100
- 520 GOTO 115
- 525 REM INS Toggle
- 530 IF ZCT%=ZLEN%-1 THEN 1140
- 535 IF ZINS%=0 THEN GOSUB 1155 ELSE GOSUB 1165
- 540 GOTO 170
- 545 REM INS Char.
- 550 IF ZCT%=ZLEN% THEN 1140
- 555 ZDL$=LEFT$(ZD$,ZCPTR%-1):ZDR$=MID$(ZD$,ZCPTR%):ZDR$=ZCH$+ZDR$
- 560 ZD$=ZDL$+ZDR$:ZCT%=ZCT%+1:ZCPTR%=ZCPTR%+1
- 565 PRINT ZDR$;STRING$(ZLEN%-LEN(ZD$),".");"]":GOTO 1145
- 570 REM Delete Char
- 575 IF ZCT%=ZCPTR%-1 THEN 1140
- 580 GOSUB 1165:ZDL$=LEFT$(ZD$,ZCPTR%-1):ZDR$=MID$(ZD$,ZCPTR%+1)
- 585 ZD$=ZDL$+ZDR$:ZCT%=ZCT%-1:PRINT ZDR$;".":GOTO 1145
- 590 GOTO 170
- 595 REM Back Tab
- 600 GOSUB 1165:ZCPTR%=1:GOTO 1145
- 605 REM Ctrl-End
- 610 GOSUB 1165:ZCT%=ZCPTR%-1:ZD$=LEFT$(ZD$,ZCT%):LOCATE 23,ZLEND%+2+ZCPTR%:PRINT STRING$(ZLEN%-LEN(ZD$),".");"]":GOTO 1145
- 615 REM Pass Function Keys
- 620 ZCTL%=ZXT%:GOTO 415
- 625 REM Forw'd Tab
- 630 GOSUB 1165:ZCPTR%=ZCT%+1:GOTO 1145
- 635 REM Overstrike
- 640 ZDL$=LEFT$(ZD$,ZCPTR%-1):IF ZCPTR%-1=0 THEN ZDL$=""
- 645 ZDR$=MID$(ZD$,ZCPTR%+1):IF ZCPTR%-1=ZCT% THEN ZDR$=""
- 650 ZD$=ZDL$+ZCH$+ZDR$:PRINT ZCH$;:ZCPTR%=ZCPTR%+1:GOTO 170
- 655 REM Common End
- 660 ZD$=" ":ZN=0:ZINS%=0
- 665 GOSUB 1165:ZPL$="":RETURN
- 670 REM ZMENU
- 675 GOSUB 1120:ZROWX%=VAL(ZFLD1$):GOSUB 1125:ZCOL%=VAL(ZFLD2$):LOCATE ZROWX%,ZCOL%:ZLTST%=LEN(Z$)
- 680 FOR ZMNO%=1 TO 15:ZPTR1%=ZPTR2%:IF ZPTR2%=0 THEN 705
- 685 IF ZPTR2%>=ZLTST% THEN 705
- 690 GOSUB 1125
- 695 IF ZMNO%<10 THEN ZPD$=" " ELSE ZPD$=""
- 700 PRINT TAB(ZCOL%);ZPD$;ZMNO%;"- ";ZFLD2$:NEXT ZMNO%
- 705 PRINT:IF ZMNO%>9 THEN ZX$="2" ELSE ZX$="1"
- 710 ZSAVE$=Z$:Z$=" Enter Selection,"+ZX$+",2":Z=1:GOSUB 100:ON ZR% GOTO 715,730,730,730,730
- 715 ZL=1:ZH=ZMNO%-1:Z$=ZSAVE$:Z=10:GOSUB 100
- 720 ON ZV% GOTO 730,725,725
- 725 ZSAVE$=Z$:ZD$=STR$(ZN):Z=20:GOSUB 100:Z$=ZSAVE$:GOTO 675
- 730 RETURN
- 735 REM ZTCLR
- 740 FOR Z%=1 TO 15:ZMENU$(Z%)="":NEXT Z%:RETURN
- 745 REM ZTMENU
- 750 ZPTR2%=0:ZPDL$=STRING$(((78-ZW%)/2)," "):ZPR%=(78-ZW%)/2:LOCATE ZROW%,1:FOR ZMNO%=1 TO 15:ZFLD$=ZMENU$(ZMNO%):IF ZPTR2%=LEN(Z$) THEN 775
- 755 ZPTR1%=ZPTR2%:GOSUB 1125:ZMD$=ZFLD2$:ZPTR1%=ZPTR2%:GOSUB 1125
- 760 ZTYPE%=VAL(ZFLD2$):ZMLEN%(ZMNO%)=ZTYPE%:IF ZFLD$="" THEN ZFLD$="["+STRING$(ZTYPE%,".")+"]"
- 765 ZCOL%=LEN(ZFLD$):IF ZMNO%<10 THEN ZPD$=" " ELSE ZPD$=""
- 770 PRINT ZPDL$;ZPD$;STR$(ZMNO%)+". ";ZMD$;TAB(80-ZCOL%-2-ZPR%);ZFLD$:NEXT ZMNO%
- 775 RETURN
- 780 REM ZUPTMENU
- 785 ZPTR1%=ZMLEN%(ZY%):ZPR%=(78-ZW%)/2:LOCATE (ZROW%+ZY%-1),(80-ZPTR1%-4-ZPR%):PRINT TAB(79)
- 790 ZMENU$(ZY%)=ZD$
- 795 ZCOL%=LEN(ZMENU$(ZY%)):LOCATE (ZROW%+ZY%-1),(80-ZCOL%-2-ZPR%):PRINT ZMENU$(ZY%);TAB(79):RETURN
- 800 REM ZBOX
- 805 PRINT ZB2$:PRINT ZB1$;CHR$(221);TAB(76);CHR$(222);ZB1$
- 810 PRINT ZB1$;CHR$(221);TAB(41-(LEN(ZTITLE$)/2));ZTITLE$;TAB(76);CHR$(222);ZB1$
- 815 PRINT ZB1$;CHR$(221);TAB(76);CHR$(222);ZB1$:PRINT ZB2$:PRINT
- 820 RETURN
- 825 REM ZLINE
- 830 LOCATE 1,1:COLOR 1
- 835 PRINT ZTITLE$;TAB(72);ZDT$:COLOR 7
- 840 RETURN
- 845 REM ZAOK
- 850 Z=13:GOSUB 100:Z$="All ok? Y or N,1,1":Z=1:GOSUB 100:Z=9:GOSUB 100:Z=14:GOSUB 100:RETURN
- 855 REM ZTESTYN
- 860 ZV%=3:IF (ZD$="Y") OR (ZD$="y") THEN ZV%=1
- 865 IF (ZD$="N") OR (ZD$="n") THEN ZV%=2
- 870 RETURN
- 875 REM ZNLIMIT
- 880 ZV%=1:IF ZL>ZN THEN ZV%=2
- 885 IF ZH<ZN THEN ZV%=3
- 890 IF (ZCTL%<>0) AND (ZR%>3) THEN ZV%=4
- 895 RETURN
- 900 REM ZSCREEN
- 905 FOR Z%=Z% TO 24:LOCATE Z%,1:PRINT TAB(80);:NEXT Z%:RETURN
- 910 REM ZBEEP
- 915 SOUND 50,3:RETURN
- 920 REM ZUP
- 925 ZCSW%=1:RETURN
- 930 REM ZMIX
- 935 ZCSW%=0:RETURN
- 940 REM ZEND
- 945 CLS:Z=6:GOSUB 100
- 950 LOCATE 10,32,0:PRINT "VARPTR";STRING$(17,"SOUND");"COLOR"
- 955 LOCATE ,32:PRINT "CALL";" End Program ";"CALL"
- 960 LOCATE ,32:PRINT "CLS";STRING$(17,"SOUND");"'"
- 965 LOCATE 21,1,0:GOTO 25
- 970 REM ZCTR
- 975 GOSUB 1030:GOTO 1025
- 980 REM ZCTRR
- 985 GOSUB 1030
- 990 COLOR 8,7:GOTO 1025
- 995 REM ZCTRB
- 1000 GOSUB 1030
- 1005 COLOR 23:GOTO 1025
- 1010 REM ZCTRU
- 1015 GOSUB 1030
- 1020 COLOR 1
- 1025 PRINT ZFLD2$;:COLOR 7:PRINT TAB(79);:RETURN
- 1030 LOCATE 23,1:PRINT:GOSUB 1120:ZFLD2$=MID$(Z$,ZPTR1%+1):Z%=VAL(ZFLD1$):LOCATE Z%,,0:PRINT TAB((80-LEN(ZFLD2$))/2);:RETURN
- 1035 REM ZERRINV
- 1040 Z$="24,"+ZD$+" Is Invalid":GOTO 1110
- 1045 REM ZERRINT
- 1050 Z$="24,"+ZD$+" Is Not an Integer Number":GOTO 1110
- 1055 REM ZERRNUM
- 1060 Z$="24,"+ZD$+" Is Not Numeric":GOTO 1110
- 1065 REM ZERRCTRL
- 1070 IF ZCTL%>26 THEN ZDS2%=ZCTL%-58:ZDS$="F"+MID$(STR$(ZDS2%),2) ELSE ZDS$="Control "+CHR$(ZCTL%+64)
- 1075 Z$="24,Function Key = "+ZDS$+ZE$:GOTO 1110
- 1080 REM ZERRENT
- 1085 Z$="24,ENTER-Only Entry "+ZE$:GOTO 1110
- 1090 REM ZERRBACK
- 1095 Z$="24,Field Backup Entry "+ZE$:GOTO 1110
- 1100 REM ZERRHELP
- 1105 Z$="24,HELP "+ZE$
- 1110 Z=17:GOSUB 100:Z=12:GOSUB 100:ZY=2:Z=29:GOSUB 100:Z%=24:Z=11:GOSUB 100:RETURN
- 1115 REM Routines
- 1120 ZPTR1%=INSTR(1,Z$,","):ZFLD1$=LEFT$(Z$,ZPTR1%-1):RETURN
- 1125 ZPTR2%=INSTR(ZPTR1%+1,Z$,","):ZFLD2$=MID$(Z$,ZPTR1%+1,ZPTR2%-ZPTR1%-1):RETURN
- 1130 REM ZDELAY
- 1135 FOR ZX=1 TO ZY*ZTFAC:NEXT ZX:RETURN
- 1140 Z=12:GOSUB 100:GOTO 165
- 1145 LOCATE 23,ZLEND%+2+ZCPTR%,1:GOTO 170
- 1150 REM INS On
- 1155 ZINS%=1:LOCATE ,,,4,12:RETURN
- 1160 REM INS Off
- 1165 ZINS%=0:LOCATE ,,,11,12:RETURN
- 9000 REM Save Program
- 9010 ZPROG$="program name"
- 9020 PRINT "Saving B:"+ZPROG$+".BAS"
- 9030 SAVE "B:"+ZPROG$
- 9040 PRINT "Saving B:"+ZPROG$+".S"
- 9050 SAVE "B:"+ZPROG$+".S",A
- 9060 RETURN
- 9090 REM Memory Display
- 9100 CLS:LOCATE 10,1,0:PRINT TAB(32);"Memory Statistics":PRINT:PRINT TAB(27);"Remaining Memory: ";FRE(0):PRINT:PRINT TAB(27);"Program Length: ";61529-FRE(0):RETURN
- 10000 REM Begin Program Here
-